home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d19 / gw15pak.arc / GWTERM10.ARC / SOURCE.ARC / MOUSE4.PAS < prev   
Pascal/Delphi Source File  |  1989-12-18  |  5KB  |  183 lines

  1. Unit Mouse4;
  2.  
  3. {*******************************************************************}
  4. {*                   Mouse4 - Text Mouse Unit                      *}
  5. {*                     version .9, 11/20/87                        *}
  6. {*                by Richard Sadowsky 74017,1670                   *}
  7. {*                 released to the public domain                   *}
  8. {*******************************************************************}
  9.  
  10. Interface
  11.  
  12. Uses DOS;
  13.  
  14. const
  15.   CURPOS           = 1; { not used yet in this version }
  16.   LEFTPRESS        = 2;
  17.   LEFTREL          = 4;
  18.   RIGHTPRESS       = 8;
  19.   RIGHTREL         = 16;
  20.  
  21. var
  22.   Mouse_Reg        : Registers;
  23.   Mouse_Installed  : Boolean;
  24.   Mouse_Error      : Word;
  25.  
  26. function InitMouse : Word;
  27. { Function 0 - Initialize mouse software and hardware }
  28.  
  29. procedure ShowMouse;
  30. { function 1 - show mouse cursor }
  31.  
  32. procedure HideMouse;
  33. { function 2 - hide mouse cursor }
  34.  
  35. function MousePosition(var MouseX,MouseY : Word) : Word;
  36. { function 3 - return mouse position and button status }
  37. { X and Y values scaled for 80 col text mode }
  38.  
  39. procedure setmouseposition(mousex, mousey: Word);
  40. { function 4 - sets mouse position  }
  41. { X and Y values scaled for 80 col text mode }
  42.  
  43. function mousepress(button: Word;
  44.                      var count, lastx, lasty: Word): Word;
  45. { function 5 - gets button press information  }
  46. { X and Y values scaled for 80 col text mode }
  47.  
  48. function mouserelease(button: Word;
  49.                        var count, lastx, lasty: Word): Word;
  50. { function 6 - gets button release information  }
  51. { X and Y values scaled for 80 col text mode }
  52.  
  53. procedure setmousexy(x1,y1,x2,y2: Word);
  54. { functions 7 and 8 - sets min/max values for horizontal/vertical  }
  55. { X and Y values scaled for 80 col text mode }
  56.  
  57. procedure restoremousexy;
  58. { functions 7 and 8 - restores min/max values for CGA screen }
  59.  
  60. procedure SetPixeltoMickey(Horiz,Verti : Word);
  61. { function 15 - sets the mickey to pixel ratio }
  62.  
  63. implementation
  64.  
  65. function InitMouse : Word;
  66. { Function 0 - Initialize mouse software and hardware }
  67. begin
  68.   with Mouse_Reg do
  69.     Ax := 0;
  70.   Intr($33,Mouse_Reg);
  71.   InitMouse := Mouse_Reg.Ax;
  72. end;
  73.  
  74. procedure ShowMouse;
  75. { function 1 - show mouse cursor }
  76. begin
  77.   Mouse_Reg.Ax := 1;
  78.   Intr($33,Mouse_Reg);
  79. end;
  80.  
  81. procedure HideMouse;
  82. { function 2 - hide mouse cursor }
  83.  
  84. begin
  85.   Mouse_Reg.AX := 2;
  86.   Intr($33,Mouse_Reg);
  87. end;
  88.  
  89. function MousePosition(var MouseX,MouseY : Word) : Word;
  90. { function 3 - return mouse position and button status }
  91. { X and Y values scaled for 80 col text mode }
  92. begin
  93.   Mouse_Reg.Ax := 3;
  94.   Intr($33,Mouse_Reg);
  95.   with Mouse_Reg do begin
  96.     MouseX := Succ(Cx DIV 8);
  97.     MouseY := Succ(Dx DIV 8);
  98.     MousePosition := Bx;
  99.   end;
  100. end;
  101.  
  102. procedure setmouseposition(mousex, mousey: Word);
  103. { function 4 - sets mouse position  }
  104. { X and Y values scaled for 80 col text mode }
  105. begin
  106.   Mouse_Reg.ax:=4;
  107.   Mouse_Reg.cx:=Pred(mousex*8);
  108.   Mouse_Reg.dx:=Pred(mousey*8);
  109.   intr($33,Mouse_Reg);
  110. end;
  111.  
  112. function mousepress(button: Word;
  113.                      var count, lastx, lasty: Word): Word;
  114. { function 5 - gets button press information  }
  115. { X and Y values scaled for 80 col text mode }
  116. begin
  117.   Mouse_Reg.ax:=5;
  118.   Mouse_Reg.bx:=button;
  119.   intr($33,Mouse_Reg);;
  120.   mousepress:=Mouse_Reg.ax;
  121.   count:=Mouse_Reg.bx;
  122.   lastx:=Succ(Mouse_Reg.cx div 8);
  123.   lasty:=Succ(Mouse_Reg.dx div 8);
  124. end;
  125.  
  126. function mouserelease(button: Word;
  127.                        var count, lastx, lasty: Word): Word;
  128. { function 6 - gets button release information  }
  129. { X and Y values scaled for 80 col text mode }
  130. begin
  131.   Mouse_Reg.ax:=6;
  132.   Mouse_Reg.bx:=button;
  133.   intr($33,Mouse_Reg);;
  134.   mouserelease:=Mouse_Reg.ax;
  135.   count:=Mouse_Reg.bx;
  136.   lastx := Succ(Mouse_Reg.cx div 8);
  137.   lasty := Succ(Mouse_Reg.dx div 8);
  138. end;
  139.  
  140. procedure setmousexy(x1,y1,x2,y2: Word);
  141. { functions 7 and 8 - sets min/max values for horizontal/vertical  }
  142. { X and Y values scaled for 80 col text mode }
  143. begin
  144.   Mouse_Reg.ax:=7;
  145.   Mouse_Reg.cx:=Pred(x1*8);
  146.   Mouse_Reg.dx:=Pred(x2*8);
  147.   intr($33,Mouse_Reg);
  148.   Mouse_Reg.ax:=8;
  149.   Mouse_Reg.cx:=Pred(y1*8);
  150.   Mouse_Reg.dx:=Pred(y2*8);
  151.   intr($33,Mouse_Reg);
  152. end;
  153.  
  154. procedure restoremousexy;
  155. { functions 7 and 8 - restores min/max values for CGA screen }
  156. begin
  157.   Mouse_Reg.ax:=7;
  158.   Mouse_Reg.cx:=0;
  159.   Mouse_Reg.dx:=639;
  160.   intr($33,Mouse_Reg);
  161.   Mouse_Reg.ax:=8;
  162.   Mouse_Reg.cx:=0;
  163.   Mouse_Reg.dx:=199;
  164.   intr($33,Mouse_Reg);
  165. end;
  166.  
  167. procedure SetPixeltoMickey(Horiz,Verti : Word);
  168. { function 15 - sets the mickey to pixel ratio }
  169.  
  170. begin
  171.   with Mouse_Reg do begin
  172.     Ax := 15;
  173.     Cx := Horiz;
  174.     Dx := Verti;
  175.   end;
  176.   Intr($33,Mouse_Reg)
  177. end;
  178.  
  179. begin
  180.   Mouse_Error := InitMouse;
  181.   Mouse_Installed := Mouse_Error = 65535;
  182. end.
  183.